		
	public Menu ingameMenu;
	
	public void UpdateIGM()
	{	
		if(ingameMenu == null)
		{
			ingameMenu = new Menu(SCREEN_WIDTH, SCREEN_HEIGHT, MENUS.MAIN_MENU_BACKGROUND_COLOR, MENUS.MAIN_MENU_FOREGROUND_COLOR, MENUS.MAIN_MENU_HIGHLIGHT_COLOR, 0, TEXT.INGAME_MENU_ENTRIES, cGame_g);
			ingameMenu.setAlpha(MENUS.MAIN_MENU_ALPHA_LEVEL);
		}
		
		drawMap();
		ingameMenu.draw(Menu.RECT_TYPE_ALPHA);
		//ingameMenu.draw();
		drawSoftKeys(SOFTKEYS.STR_SELECT, SOFTKEYS.STR_NONE);
				
		if(messageId != OPTIONS.MESSAGE_ID_IDLE && messageShowStart != 0)
		{
			showMessage(messageId, OPTIONS.MESSAGE_TYPE[messageId]);
		}		
		
		ingameMenu.handleInput(keyflags);
		
		if(isKeyPressed(KEYS.KEY_5) || isKeyPressed(KEYS.KEY_FIRE) || isKeyPressed(KEYS.KEY_LSK))
		{
			switch(ingameMenu.selIndex)
			{
				case MENUS.IGM_RESUME:
					SetState(STATES.INGAME);
					clearKeys();
				break;
				case MENUS.IGM_SAVE:
					saveGame();
					messageId = OPTIONS.MESSAGE_ID_SAVE;
					messageShowStart = 1;
					clearKeys();
				break;
				case MENUS.IGM_OPTIONS:
					SetState(STATES.OPTIONS);
					clearKeys();
				break;
				case MENUS.IGM_HELP:
					clearKeys();
				break;
				case MENUS.IGM_MAIN_MENU:
					// FIX OF HIGH BUG (FIX DE ALTO BUG!!!): CONSTANTS CHANGES THEIR VALUES!!! WTF!!!
					for(int i = 0; i < COUNTRY_INFO.TOTAL_COUNTRIES; i++)
					{
						tegCountries[i].collisionRect[cCountry.RECT_X] -= INGAME.VIEWPORT_X;
						tegCountries[i].collisionRect[cCountry.RECT_Y] -= INGAME.VIEWPORT_Y;
					}
					// END FIX
					tegPlayers = null;
					boardImg = null;
					diceImg = null;
					cursorImg = null;
					cardsImg = null;
					mainMenu = null;
					someoneWon = false;
					thirtyCountries = false;
					winner = -1;
					SetState(STATES.MAIN_MENU);
					SetIngameState(STATES.INGAME_INIT);
					clearKeys();
				break;
				case MENUS.IGM_EXIT:
					exit();
					clearKeys();
				break;
			}
		}
	}